<?php

namespace App\Common\Lib\Fun;

use App\Common as com;

class Check {

	/**
	 * 是否为手机号码
	 * @param string $mobilephone 手机号
	 * @return bool
	 */
	public static function isMobile( $mobilephone ):bool {
		if( preg_match( '/^1[0-9]{10}$/', $mobilephone ) ){
			//验证通过
			return true;
		}else{
			//手机号码格式不对
			return false;
		}
	}

	/**
	 * 填充字符串，不满足长度时，在前面填充其他字符
	 * @param string string [必填]需要填充的字符串
	 * @param int $fill_length [必填]填充长度
	 * @param string $fill_char [可空]填充字符[只能一个字符，超过一个字符时，截取第一个字符][默认为'0']
	 * @param bool $force_length [可空]是否强制为指定长度，为true时，超过的部分删除 [可空-默认为false]
	 * @return string 处理后的数据
	 */
	public static function strFill( string $str, int $fill_length, string $fill_char = '0', bool $force_length = false ):string {
		//检验参数
		$fill_char = (string)$fill_char;
		if( strlen( $fill_char ) > 1 ) substr( $fill_char, 0, 1 );
		if( empty( $fill_char ) ) $fill_char = '0';
		//处理
		$str = (string)$str;
		$num_i = strlen( $str );
		for( $i = $num_i; $i < $fill_length; $i++ ){
			$str = $fill_char . $str;
		}
		if( $force_length == true && strlen( $str ) > $fill_length ){
			$str = substr( $str, 0 - $fill_length );
		}
		return $str;
	}

	/**
	 * 检测数字范围是否符合
	 * @param int $number 待检测数字
	 * @param array $param 数组参数
	 *        [必填]$param['min'] 最小值
	 *        [必填]$param['max'] 最大值
	 * @return bool [[false-不符合][true-符合]]
	 */
	public static function checkInt( $number, array $param = [] ):bool {
		// 检验参数
		$number = (int)$number;
		$param['max'] = (int)$param['max'];
		$param['min'] = (int)$param['min'];
		//处理
		if( $number > $param['max'] || $number < $param['min'] ) return false;
		return true;
	}

	/**
	 * 格式化数字
	 * @param int $number 待格式化数字
	 * @param array $param 数组参数
	 *        [可空]$param['min'] 最小值
	 *        [可空]$param['max'] 最大值
	 *        [可空]$param['default'] 默认值[为空时，值取最小值]
	 * @return str 返回格式化后的数字
	 */
	public static function formatInt( $number, array $param = [] ){
		//检验参数
		$number = (int)$number;
		if( !isset( $param_default ) ){
			$param_default = isset( $param['min'] ) ? $param['min'] : '0';
		}
		//处理
		if( isset( $param['min'] ) && $number < (int)$param['min'] ) $number = $param_default;
		if( isset( $param['max'] ) && $number > (int)$param['max'] ) $number = $param_default;
		//
		return $number;
	}

	/**
	 * 字符串是否含有特殊字符
	 * @param string $str 待检验的字符串
	 * @return bool
	 */
	public static function isHasSpeciaStr( $str ):bool {
		// if(preg_match("/[\'.,:;*?~`!@#$%^&+=)(<>{}]|\]|\[|\/|\\\|\"|\|/", $str)){ //不允许特殊字符
		if( preg_match( '/^[\x{4e00}-\x{9fa5}a-zA-Z0-9_]+$/u', $str ) ){ // 不允许特殊字符
			return false;
		}else{
			return true;
		}
	}
}
